package com.java.wechat.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.java.wechat.netty.ChatMsg;
import com.java.wechat.entity.User;
import com.java.wechat.entity.bo.UserBO;
import com.java.wechat.entity.vo.FriendRequestVO;
import com.java.wechat.entity.vo.MyFriendsVO;
import com.java.wechat.util.R;

import java.util.List;

/**
 * 
 *
 * @author jiangli
 * @email 31346337@qq.com
 * @date 2019-11-01 19:47:34
 */
public interface UserService extends IService<User> {

	/**
	 * 判断用户名是否存在
	 */
	Boolean queryUsernameIsExist(String username);

	/**
	 * 查询用户是否存在
	 */
	User queryUserForLogin(String username,String password);

	/**
	 * 用户注册
	 */
	User saveUser(User user);

	/**
	 * 更新头像
	 */
    R uploadFaceBase64(UserBO userBO);

	/**
	 * 更新昵称
	 */
	R setNickname(UserBO userBO);

	/**
	 * 搜索朋友的前置条件
	 */
	Integer preconditionSearchFriends(String myUserId, String friendUsername);

	/**
	 * 添加好友请求记录，保存到数据库
	 */
	void sendFriendRequest(String myUserId, String friendUsername);

	/**
	 * 查询好友申请
	 */
	List<FriendRequestVO> queryFriendRequestList(String userId);

	/**
	 * 删除好友申请记录
	 */
	void deleteFriendRequest(String sendUserId, String acceptUserId);

	/**
	 *  通过好友请求
	 * 	 1. 保存好友
	 * 	 2. 逆向保存好友
	 * 	 3. 删除好友请求记录
	 */
	void passFriendRequest(String sendUserId, String acceptUserId);

	/**
	 * 查询好友列表
	 */
	List<MyFriendsVO> queryMyFriends(String userId);

	/**
	 * 保存聊天消息到数据库
	 */
	String saveMsg(ChatMsg chatMsg);

	/**
	 * 批量签收消息
	 */
	void updateMsgSigned(List<String> msgIdList);

	/**
	 *  获取未签收消息列表
	 */
	List<com.java.wechat.entity.ChatMsg> getUnReadMsgList(String acceptUserId);
}

